home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / lib / pm-utils / bin / pm-action
Text File  |  2008-10-15  |  3KB  |  99 lines

  1. #!/bin/sh
  2. # vim: noexpandtab
  3. # Simple suspend script
  4. #
  5. # Copyright 2006 Red Hat, Inc.
  6. #
  7. # Based on work from:
  8. #    Bill Nottingham <notting@redhat.com>
  9. #    Peter Jones <pjones@redhat.com>
  10. #    David Zeuthen <davidz@redhat.com>
  11. #    Richard Hughes <richard@hughsie.com>
  12. #
  13. # This program is free software; you can redistribute it and/or modify
  14. # it under the terms of version 2 of the GNU General Public License as
  15. # published by the Free Software Foundation.
  16. #
  17. # This program is distributed in the hope that it will be useful,
  18. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  19. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  20. # GNU General Public License for more details.
  21. #
  22. # You should have received a copy of the GNU General Public License
  23. # along with this program; if not, write to the Free Software
  24. # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  25. #
  26.  
  27. # The rule here? Simplicity.
  28.  
  29. . "/usr/lib/pm-utils/pm-functions"
  30.  
  31. help()
  32. {
  33.     echo "${0##*/} [options]"
  34.     echo
  35.     echo "Options can change how suspend or hibernate is done."
  36.     run_hooks sleep help
  37.     command_exists sleep_method_help && sleep_method_help
  38.     exit 0
  39. }
  40.  
  41. if [ "$(id -u)" != "0" ]; then
  42.     echo This utility may only be run by the root user. 1>&2
  43.     exit 1
  44. fi
  45. take_suspend_lock || exit 1
  46.  
  47. # make sure we release the lock no matter how we exit
  48. trap remove_suspend_lock 0
  49.  
  50. while [ $# -gt 0 ]
  51. do
  52.     [ "$1" = "--help" ] && help
  53.     shift
  54. done
  55.  
  56. METHOD="$(echo ${0##*pm-} |tr - _)"
  57.  
  58. command_exists "check_$METHOD" && command_exists "do_$METHOD" || {
  59.     log "pm-utils does not know how to $METHOD on this system."
  60.     exit 1
  61. }
  62.  
  63. "check_$METHOD" || {
  64.     log "This system does not support $METHOD as a sleep method."
  65.     exit 1
  66. }
  67.  
  68. case "$METHOD" in
  69.     suspend*)     ACTION=suspend;   REVERSE=resume ;;
  70.     hibernate)     ACTION=hibernate; REVERSE=thaw ;;
  71.     *)        echo "Cannot happen.  Please file a bug against pm-utils."
  72.             exit 1 ;;
  73. esac
  74.  
  75. init_logfile "${PM_LOGFILE}"
  76. log "Initial commandline parameters: $PM_CMDLINE"
  77. load_hook_blacklist
  78. load_hook_parameters
  79.  
  80. # Make sure we are not inhibited before we start.
  81. rm -f "${INHIBIT}"
  82.  
  83. # run the sleep hooks
  84. log "$(date): Running hooks for $ACTION."
  85. run_hooks sleep "$ACTION"
  86. # Sleep only if we know how and if a hook did not inhibit us.
  87. if [ ! -e "$INHIBIT" ]; then
  88.     log "$(date): performing $METHOD"
  89.     sync
  90.     "do_$METHOD"
  91.     log "$(date): Awake."
  92. else
  93.     log "$(date): Inhibit found, will not perform $METHOD"
  94. fi
  95. log "$(date): Running hooks for $REVERSE"
  96. # run the sleep hooks in reverse with the wakeup action
  97. run_hooks sleep "$REVERSE" reverse
  98. log "$(date): Finished."
  99.